#ifndef __STACK_H
#define __STACH_H

#define RESERVE_SIZE_SYM "__size"

const char *getLabelReserveSize (const char *name) ;

struct LabelSymbol {
    const char *label ;
    int value ;
    struct LabelSymbol *next ;
} ;

/* Ajoute un label avec la valeur correspondante. */
int pushLabelSymbol (const char *name, int value) ;

/* 
   Tente de récupérer la valeur associé au label.
   Retourne 0 en cas de succès et associe la valeur à value,
   retourne 1 sinon.
*/
int getLabelValue (const char *label, int *value) ;

/*
  Replace tous les labels dans le flux d'entrée par celle stockée dans la pile.
  Ferme les flux à la fin de la fonction.
*/
int replaceLabels (const char *inputName, const char *outputName) ;

#endif
